var fs = require('fs')
var express = require('express')
var bodyParser = require('body-parser')
var Student = require('./student')

// 配置 body-parser 中间件（专门用来处理 post 表单请求体）
var urlencodedParser = bodyParser.urlencoded({ extended: false })

// 1.创建路由容器
var router = express.Router()

// module.exports = function (app) {
//   app.get('/students', function (req, res) {
//     fs.readFile('./db.json', function (err, data) {
//       if (err) return res.status(500).send('Server error')
//       var students = JSON.parse(data).students
//       res.render('index.html', {
//         students: students,
//       })
//     })
//   })

//   app.get('/students/new', function (req, res) {})

//   app.get('/students/new', function (req, res) {})

//   app.get('/students/new', function (req, res) {})

//   app.get('/students/new', function (req, res) {})

//   app.get('/students/new', function (req, res) {})
// }

router.get('/', function (req, res) {
  res.redirect('/students')
})

// 2.把路由都挂载在 router 路由上
router.get('/students', function (req, res) {
  Student.find(function (err, students) {
    if (err) return res.status(500).send('Server error')
    res.render('index.html', {
      students: students
    })
  })
})

router.get('/students/new', function (req, res) {
  // Student.find(function (err, students) {
  //   if (err) return res.status(500).send('Server error')
  //   res.render('index.html', {
  //     students: students,
  //   })
  // })
  res.render('new.html')
})

router.post('/students/new', urlencodedParser, function (req, res) {
  // 1.获取表单数据
  console.log(req.body)
  // 2.处理 将数据保存到 db.json 文件中用以持久化
  // 3.发送响应 1、先读取出来，转成对象 2、然后往对象中 push数据
  //            3、然后把对象转为字符串 4、然后把字符串再次写入文件

  new Student(req.body).save(function (err) {
    if (err) return res.status(500).send('Server error')
    res.redirect('/students')
  })
})

router.get('/students/edit', function (req, res) {
  console.log(req.query.id.replace(/"/g, ''))
  Student.findById(req.query.id.replace(/"/g, ''), function (err, student) {
    if (err) {
      console.log(err)
      return res.status(500).send('Server error')
    }

    res.render('edit.html', {
      student: student
    })
  })
})

router.post('/students/edit', urlencodedParser, function (req, res) {
  console.log(req.body)

  Student.findOneAndUpdate({ _id: req.body.id }, req.body, function (err) {
    if (err) return res.status(500).send('Server error')
    res.redirect('/students')
  })
})

router.get('/students/delete', function (req, res) {
  Student.findByIdAndRemove(req.query.id.replace(/"/g, ''), function (err) {
    if (err) return res.status(500).send('Server error')
    res.redirect('/students')
  })
})

// 3.导出 router
module.exports = router
